package com.itlaobing.core;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

// 将查询结果 映射 到 对象中

public class ExecuteQueryMapping {
    public static void main(String[] args) throws Exception {

        JdbcUtils jdbcUtils = JdbcUtils.getInstace(DatabaseType.MYSQL);

        jdbcUtils.load();
        Connection connection = jdbcUtils.connection();
        Statement statement = jdbcUtils.statement(connection);

        String sql = "SELECT id , name FROM t_user ORDER BY id DESC" ;

        ResultSet resultSet = statement.executeQuery(sql);

        List<User> list = new ArrayList<>();
        /* * * 处理返回结果 (这里是遍历结果集并将结果集中的每行数据都包装成一个Java对象) * * */
        // next()方法会导致 结果集中的 指针 向下移动一行，并判断改行是否有数据(若有数据则返回true)
        while (resultSet.next()){
            int id = resultSet.getInt( "id" ) ; // 根据 列名 或 列别名 获取当前行指定列的值
            String name = resultSet.getString( "name" ) ; // 如果查询语句中指定了列的别名则只能使用列的别名
            System.out.println(id +","+name);
            User user = new User(id,name);
            list.add(user);
        }

        //关闭结果集
        resultSet.close();

        jdbcUtils.release(statement,connection);

        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

        for (User lists:list) {
            System.out.println(lists);
        }
    }
}
